From: Florian Müllner Date: Sat, 20 Jan 2024 06:46:03 +0000 (+0100) Subject: tests: Drop wrapper script for unit test runner X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~226^2^2~145 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=1fcdc60ca07d8956eddf0e2aa27c5a450fe835ce;p=gnome-shell.git tests: Drop wrapper script for unit test runner We build a small run-js-test executable so tests run in a similar environment as gnome-shell, and then wrap it with a generated script that provides environment variables like GI_TYPELIB_PATH. This is more complicated than it needs to be, we can just as well set up the typelib search path from the runner and pass in the environment via meson. Part-of: --- diff --git a/src/main.c b/src/main.c index 10b5f6eb0..4be47258e 100644 --- a/src/main.c +++ b/src/main.c @@ -222,7 +222,7 @@ shell_introspection_init (void) { g_irepository_prepend_search_path (MUTTER_TYPELIB_DIR); - g_irepository_prepend_search_path (GNOME_SHELL_PKGLIBDIR); + g_irepository_prepend_search_path (SHELL_TYPELIB_DIR); /* We need to explicitly add the directories where the private libraries are * installed to the GIR's library path, so that they can be found at runtime diff --git a/src/meson.build b/src/meson.build index 422a68d8d..456e5e70c 100644 --- a/src/meson.build +++ b/src/meson.build @@ -45,6 +45,11 @@ install_data('gnome-shell-extension-prefs', install_dir: bindir ) +typelib_cflags = [ + '-DMUTTER_TYPELIB_DIR="@0@"'.format(mutter_typelibdir), + '-DSHELL_TYPELIB_DIR="@0@"'.format(pkglibdir), +] + gnome_shell_cflags = [ '-DCLUTTER_ENABLE_EXPERIMENTAL_API', '-DCOGL_ENABLE_EXPERIMENTAL_API', @@ -248,9 +253,7 @@ libshell_gir = gnome.generate_gir(libshell, ) executable('gnome-shell', 'main.c', - c_args: gnome_shell_cflags + [ - '-DMUTTER_TYPELIB_DIR="@0@"'.format(mutter_typelibdir) - ], + c_args: gnome_shell_cflags + typelib_cflags, dependencies: gnome_shell_deps + [libshell_dep, libst_dep, mutter_dep], include_directories: [conf_inc, st_inc, include_directories('tray')], build_rpath: mutter_typelibdir, @@ -276,8 +279,9 @@ executable('gnome-shell-perf-helper', 'shell-perf-helper.c', js_resources, install: true ) -executable('run-js-test', 'run-js-test.c', +run_test = executable('run-js-test', 'run-js-test.c', dependencies: [mutter_dep, mtk_dep, gdk_pixbuf_dep, gio_dep, gi_dep, gjs_dep], + c_args: typelib_cflags, include_directories: [conf_inc], link_with: libshell, build_rpath: mutter_typelibdir, diff --git a/src/run-js-test.c b/src/run-js-test.c index 7ebaa0bbd..87babad66 100644 --- a/src/run-js-test.c +++ b/src/run-js-test.c @@ -61,6 +61,9 @@ main(int argc, char **argv) global = shell_global_get (); js_context = _shell_global_get_gjs_context (global); + g_irepository_prepend_search_path (MUTTER_TYPELIB_DIR); + g_irepository_prepend_search_path (SHELL_TYPELIB_DIR); + /* prepare command line arguments */ if (!gjs_context_define_string_array (js_context, "ARGV", argc - 2, (const char**)argv + 2, diff --git a/tests/meson.build b/tests/meson.build index da4d40f05..286ad7ab3 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -1,12 +1,3 @@ -testconf = configuration_data() -testconf.set('MUTTER_TYPELIB_DIR', mutter_typelibdir) -testconf.set('srcdir', meson.current_source_dir()) -run_test = configure_file( - input: 'run-test.sh.in', - output: 'run-test.sh', - configuration: testconf -) - mutter_tests_datadir = mutter_test_dep.get_variable('tests_datadir') dbusrunnerconf = configuration_data() dbusrunnerconf.set('MUTTER_TEST_PKGDATADIR', mutter_tests_datadir) @@ -18,6 +9,16 @@ dbus_runner = configure_file( configuration: dbusrunnerconf, ) +gvc_typelib_path = fs.parent(libgvc.get_variable('libgvc_gir')[1].full_path()) +shell_typelib_path = fs.parent(libshell_gir[1].full_path()) +st_typelib_path = fs.parent(libst_gir[1].full_path()) + +unit_testenv = environment() +unit_testenv.set('GNOME_SHELL_DATADIR', data_builddir) +unit_testenv.append('GI_TYPELIB_PATH', gvc_typelib_path, separator: ':') +unit_testenv.append('GI_TYPELIB_PATH', shell_typelib_path, separator: ':') +unit_testenv.append('GI_TYPELIB_PATH', st_typelib_path, separator: ':') + unit_tests = [ 'highlighter', 'injectionManager', @@ -34,6 +35,7 @@ foreach test : unit_tests test(test, run_test, args: 'unit/@0@.js'.format(test), suite: 'unit', + env: unit_testenv, workdir: meson.current_source_dir()) endforeach @@ -53,7 +55,6 @@ shell_tests = [ }, ] -gvc_typelib_path = fs.parent(libgvc.get_variable('libgvc_gir')[1].full_path()) libgvc_path = fs.parent(libgvc.get_variable('libgvc').full_path()) background_file = join_paths(meson.current_source_dir(), 'data', 'background.png') diff --git a/tests/run-test.sh.in b/tests/run-test.sh.in deleted file mode 100755 index ea6d15726..000000000 --- a/tests/run-test.sh.in +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/sh - -usage() { - echo >&2 "Usage run-test.sh [-v|--verbose] ..." - exit 1 -} - -tests= -verbose=false -debug= -for arg in $@ ; do - case $arg in - -g|--debug) - debug="libtool --mode=execute gdb --args" - ;; - -v|--verbose) - verbose=true - ;; - -*) - usage - ;; - *) - tests="$tests $arg" - ;; - esac -done - -builddir=`dirname $0` -builddir=`cd $builddir && pwd` -srcdir=@srcdir@ -srcdir=`cd $srcdir && pwd` - -GI_TYPELIB_PATH="$GI_TYPELIB_PATH${GI_TYPELIB_PATH:+:}@MUTTER_TYPELIB_DIR@:$builddir/../src:$builddir/../src/st:$builddir/../subprojects/gvc" -GJS_PATH="$srcdir:$srcdir/../js:$builddir/../js" -GJS_DEBUG_OUTPUT=stderr -$verbose || GJS_DEBUG_TOPICS="JS ERROR;JS LOG" -GNOME_SHELL_TESTSDIR="$srcdir/" -GNOME_SHELL_JS="$srcdir/../js" -GNOME_SHELL_DATADIR="$builddir/../data" - -export GI_TYPELIB_PATH GJS_PATH GJS_DEBUG_OUTPUT GJS_DEBUG_TOPICS GNOME_SHELL_TESTSDIR GNOME_SHELL_JS GNOME_SHELL_DATADIR LD_PRELOAD - -for test in $tests ; do - $debug $builddir/../src/run-js-test $test || exit $? -done